import request from '../../utils/request.js'; // 导入封装的请求函数

Page({
    data: {
        // 如果logo和slogan是图片，可以在这里配置图片路径
        // logoUrl: '/static/images/logo_mjl.png',
        referenceId: ''
    },
    onLoad: function (options) {
        let referenceId = wx.getStorageSync('referenceId') || options.referenceId || '';
        this.setData({
            referenceId
        })
        if (wx.getStorageSync('token')) {
            wx.switchTab({
                url: '/pages/index/index',
            })
        }
    },
    onShow: function () {},
    // 微信一键登录
    handleWechatLogin: async function (e) {
        console.log('用户点击微信授权手机号登录按钮', e);

        if (e.detail.errMsg && e.detail.errMsg.includes('getPhoneNumber:ok')) {
            // 用户同意授权手机号
            wx.showLoading({
                title: '正在登录...',
            });

            try {
                // 1. 获取 wx.login 的 code，后端可以用此 code 换取 session_key 和 openid
                let wxLoginCode = '';
                try {
                    const loginRes = await wx.login();
                    if (loginRes.code) {
                        wxLoginCode = loginRes.code;
                    } else {
                        throw new Error('微信 wx.login 失败，无法获取 wxLoginCode');
                    }
                } catch (loginErr) {
                    console.error('wx.login 调用失败', loginErr);
                    wx.hideLoading();
                    wx.showToast({
                        title: '登录准备失败，请稍后重试',
                        icon: 'none'
                    });
                    return;
                }
                let loginData = {
                    code: wxLoginCode,
                    referenceId: this.data.referenceId
                }
                if (!this.data.referenceId) {
                    delete loginData.referenceId;
                }
                const getPhoneNumberResult = await request({
                    url: 'api/login/login', // 你的后端接口
                    method: 'POST',
                    data: loginData
                });
                if (getPhoneNumberResult.data && getPhoneNumberResult.data.token) {
                    wx.setStorageSync('token', getPhoneNumberResult.data.token)
                    setTimeout(async () => {
                        // 调用后端接口解密手机号
                        let phoneRes = await request({
                            url: 'api/login/getPhoneNumber',
                            method: 'get',
                            data: {
                                encryptedData: e.detail.encryptedData,
                                iv: e.detail.iv,
                                mobileCode: e.detail.code
                            }
                        })
                        if (phoneRes && phoneRes.data && phoneRes.data.phone) {
                            let phone = phoneRes.data.phone
                            request({
                                url: 'api/login/updateUser',
                                method: 'POST',
                                data: {
                                    phone
                                }
                            }).then(res => {
                                loginSuccess()
                            }).catch(e => {
                                loginSuccess()
                            })
                        } else {
                            loginSuccess()
                        }
                    }, 100)
                }
            } catch (error) {
                wx.hideLoading();
                console.error('登录流程处理失败:', error);
                // request.js 内部已经有 toast 提示网络或服务器基本错误
                // 这里可以根据 error.msg (如果后端在错误时返回 msg) 或其他逻辑添加更具体的提示
                let errMsg = '登录失败，请稍后再试';
                if (error && (error.msg || error.message)) {
                    errMsg = error.msg || error.message;
                }
                wx.showToast({
                    title: errMsg,
                    icon: 'none'
                });
            }
        } else {
            // 用户拒绝授权或获取手机号失败
            wx.showToast({
                title: e.detail.errMsg || '您已取消授权或授权失败',
                icon: 'none'
            });
            console.log('用户拒绝授权手机号或发生错误:', e.detail.errMsg);
        }

        function loginSuccess() {
            wx.removeStorageSync('isShow')
            wx.removeStorageSync('referenceId')
            wx.showToast({
                title: '登录成功！',
                icon: 'success'
            })
            setTimeout(() => {
                wx.switchTab({
                    url: '/pages/index/index'
                });
            }, 1500)
        }
    },
    // 取消登录
    handleCancelLogin: function () {
        console.log('用户点击取消登录');
        // 通常是返回上一页或跳转到首页
        wx.navigateBack({
            delta: 1,
            fail: function () {
                wx.switchTab({
                    url: '/pages/index/index'
                });
            }
        });
    }
});